/*
 * Copyright 2004-2005 asoft
 * 本软件及其所有拷贝的名称，与光盘上或本软件中注明的公司同在。
 * 本软件及文档享有版权，并受国家版权法及国际协约条款的保护。
 * 您不可以从本软件中去掉其版权声明；并保证为本软件的拷贝（本部或部分）* 复制版权声明。
 * 您同意制止以任何形式非法拷贝本软件及文档。
 * 版权信息参见：
 *      http://www.asoft.cn/licenses
 */

package com.asoft.common.viewframe.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import com.asoft.common.base.web.service.AbstractTreeService;
import com.asoft.common.viewframe.manager.HomeManager;
import com.asoft.common.viewframe.model.Area;
import com.asoft.common.viewframe.model.Home;
import com.asoft.common.viewframe.view.foreveryone.AreaNodeOfColumnTree4EveryOne;
import com.asoft.common.viewframe.view.foreveryone.Column1NodeOfColumnTree4EveryOne;
import com.asoft.common.viewframe.view.foreveryone.HomeNodeOfColumnTree4EveryOne;
import com.asoft.common.viewframe.view.foreveryone.RootNodeOfColumnTree4EveryOne;

/**
 * <p>Title:  - 查询栏目,将结果通过树图表现</p>
 * <p>Description:
 *      如果有多种节点类型(根节点除外),必须传
 *      递多个根节点实体
 * </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: asoft</p>
 * @ $Author: author $
 * @ $Date: 2005/02/15 09:14:59 $
 * @ $Revision: 1.7 $
 * @ created in 2005-11-14
 *
 */


public class FindColumnsForTreeViewService extends AbstractTreeService
{

        /** 节点类型－根结点 */
        public static String ROOTNODE = "0";

        /** 节点类型－ 主页：非根节点 */
        public static String HOME = "1";

		/** 节点类型－ 分区：非根节点 */
        public static String AREA = "2";

		/** 节点类型－ 一级栏目：非根节点 */
        public static String COLUMN1 = "3";

        static Logger logger = Logger.getLogger(FindColumnsForTreeViewService.class);

        private HomeManager homeManager;
        
        /**
         * @param homeManager 要设置的 homeManager。
         */
        public void setHomeManager(HomeManager homeManager)
        {
                this.homeManager = homeManager;
        }

        /** 获取树节点对应的models */
        public void createModels(Map modelsMap,
                                 HttpServletRequest request)
        {
                // 查询节点类型1
                Home rootHome = new Home();
                // 第一个元素为根节点
                modelsMap.put(ROOTNODE, rootHome);
                // put(节点类型名称,节点对应models)
                List homes = this.homeManager.findAllHomes();
                modelsMap.put(HOME, homes);
                // 分区
                List areas = new ArrayList();
                for (int i = 0; i < homes.size(); i++)
                {
                        Home home = (Home) homes.get(i);
                        areas.addAll(home.getAreas());
                }
                modelsMap.put(AREA, areas);
                // 一级栏目
                List column1s = new ArrayList();
                for (int i = 0; i < areas.size(); i++)
                {
                        Area area = (Area) areas.get(i);
                        column1s.addAll(area.getColumns());
                }
                modelsMap.put(COLUMN1, column1s);
        }

        /** 设置nodeModel's views */
        public void setNodeViews(Map viewsMap,
                                 HttpServletRequest request)
        {
                // 从 request里面获取角色参数
                // for everyone
                viewsMap.put(ROOTNODE,new RootNodeOfColumnTree4EveryOne()); // 设置根节点
                viewsMap.put(HOME,new HomeNodeOfColumnTree4EveryOne()); // 设置非根栏目节点
                viewsMap.put(AREA,new AreaNodeOfColumnTree4EveryOne()); // 设置非根栏目节点
                viewsMap.put(COLUMN1,new Column1NodeOfColumnTree4EveryOne()); // 设置非根栏目节点
        }
}
